/*
 * ================================================================================变量定义区
 */
var optype = ""; // 定义操作类型为 create/update
var currentPage = 1;//全局变量，当前页
var validateRules = "";//校验规则

/*
 * ================================================================================页面初始化函数
 */
$(function() 
{
	//获取隐藏的角色名
	var role_name = $("#hiddenRolename").val();
	
	//判断点击类型
	if (role_name && role_name.length > 0) 
	{
		optype = "update";
		$("#pageName").empty().append("update role");
	} 
	else 
	{
		optype = "create";
		$("#pageName").empty().append("create role");
	}
	
	//加载验证规则
	setRules();
	
	//启动验证
	$("#roleForm").validate(validateRules);
	
	//绑定事件
	$("#btnSubmit").bind('click', function() 
	{
		submitButtonClickEvent();
	});
	$("#btnCancel").bind('click', function() 
	{
		cancelButtonClickEvent();
	});
	
	//判断新建角色还是修改角色，如果是修改角色，使角色名称不能修改。
	if (optype == "update") 
	{
		$("#role_name").attr("disabled", "disabled");
	}
});

/*
 * ================================================================================函数定义区
 * 
 */

//提交按钮单击事件
function submitButtonClickEvent() 
{
	// 添加验证
	var validateResult = $("#roleForm").validate(validateRules).form();
	
	if (!validateResult) 
	{
		openAlert("请按提示填写完整信息");
		return;
	} 
	else 
	{
		$.ajax(
		{
			type : 'POST',
			url : BASE_PATH + '/roleManagement/addOrUpdateRole.do',
			dataType : "json",
			data :
			{
				"role_name"    : $("#role_name").val().trim(),
				"role_name_cn" : $("#role_name_cn").val().trim(),
				"remark"       : $("#remark").val().trim(),
				"optype"       : optype
			},
			
			success : function(data) 
			{
				if (data == 'success') 
				{
					openAlert('保存成功', function() 
					{
						backToCurrentPage();
					});
				} 
				else 
				{
					openAlert('保存失败');
				}
			},
			
			error : function(e) 
			{
				openAlert('操作失败！错误信息：<div>' + e.responseText + "</div>");
			}
		});
	}
}


//取消按钮单击事件
function cancelButtonClickEvent() 
{
	openConfirm('确定取消吗？', null, function() 
	{
		backToCurrentPage();
	});
}

//设置验证规则。验证role_name唯一性，非空，长度，输入字符串标准。验证role_name_cn和remark非空，长度，输入字符串标准。
function setRules() 
{	
		validateRules = 
		{
			rules: 
			{
				role_name:
				{
					required : true,
					remote:
					{
						type:"post",
						url:BASE_PATH+"/roleManagement/checkRoleName.do",
						async: false,
						data:
						{
							role_name:function()
			                 {
			                	 return $("#role_name").val().trim();
			                 },
							optype : optype,
			            }
			        },
			        nameMaxLength : true,
			        roleNameCheck : true,
				},
				
				role_name_cn :
				{
					required : true,
					nameCnMaxLength : true,
					string : true,
				},
				
				remark :
				{
					required : true,
					remarkMaxLength : true,
					string : true,
				},
			},
			
			messages : 
			{
				role_name : 
				{
					required : "请输入ROLE_NAME",
					remote : jQuery.format("ROLE_NAME已存在，请重新输入"),
					nameMaxLength : jQuery.format("ROLE_NAME过长，请重新输入"),
					roleNameCheck : jQuery.format("请输入英文字母和数字"),
				},
				
				role_name_cn :
				{
					required : "请输入ROLE_NAME_CN",
					nameCnMaxLength : jQuery.format("ROLE_NAME_CN过长，请重新输入"),
					string : jQuery.format("请输入中文、英文字母、数字、下划线"),
				},
				
				remark :
				{
					required : "请输入REMARK",
					remarkMaxLength : jQuery.format("REMARK过长，请重新输入"),
					string : jQuery.format("请输入中文、英文字母、数字和下划线"),
				},
			},
		};
		
		//验证role_name长度是否符合要求
		$.validator.addMethod("nameMaxLength",function(value,element)
		{
			var role_name = $("#role_name").val().trim();
			var totalLength = checkStringLength(role_name);
			var result = true;
			
			//判断长度是否大于数据库长度
			if(totalLength-20>0)
			{
				result = false;
			}
			
			return result;
		}
		,"ROLE_NAME过长，请重新输入！");
		
		//验证role_name_cn长度是否符合要求
		$.validator.addMethod("nameCnMaxLength",function(value,element)
		{
			var role_name_cn = $("#role_name_cn").val().trim();
			var totalLength = checkStringLength(role_name_cn);
			var result = true;
			
			//判断长度是否大于数据库长度
			if(totalLength-50>0)
			{
				result = false;
			}
			
			return result;
		}
		,"ROLE_NAME_CN过长，请重新输入！");
		
		//验证remark长度是否符合要求
		$.validator.addMethod("remarkMaxLength",function(value,element)
		{
			var remark = $("#remark").val().trim();
			var totalLength = checkStringLength(remark);
			var result = true;
			
			//判断长度是否大于数据库长度
			if(totalLength-50>0)
			{
				result = false;
			}
			
			return result;
		}
		,"REMARK过长，请重新输入！");
		
		//验证输入的字符是否为中文字、英文字母、数字和下划线
		$.validator.addMethod("string", function(value, element) 
		{
			return this.optional(element) || /^[\a-\z\A-\Z0-9\u4E00-\u9FA5\_]+$/.test(value);
		}
		,"只能包括中文字、英文字母、数字和下划线");
		
		//验证输入的字符是否为英文字母、数字
		$.validator.addMethod("roleNameCheck", function(value, element)
		{
			return this.optional(element) ||/^[a-zA-Z0-9]+$/.test(value);
		}
		,"只能包括英文字母和数字");
}

/**
 * 获取输入字符串的unicode长度
 * @param name 输入的字符串
 * @returns {Number} 字符串的长度
 */
function checkStringLength(name)
{
	var totalLength = 0;
	var charCode = 0; 
	
	for (var i = 0; i < name.length; i++) 
	{ 
		charCode = name.charCodeAt(i);
		
		if (charCode < 0x007f) 
		{ 
			totalLength = totalLength + 1; 
		} 
		else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) 
		{ 
			totalLength += 2; 
		}
		else if ((0x0800 <= charCode) && (charCode <= 0xffff))
		{ 
			totalLength += 3; 
		} 
	} 
	return totalLength;
}

/**
 * 返回当前页
 */
function backToCurrentPage()
{
	$("#submitcurrentpage").submit();
}
